#include // Pins const int ledPin = A3; const int pirPin = A1; // PIR motion sensor input const int tempPin = A2; // Temperature sensor analog input (e.g., LM35) const int servoPin = D9; Servo myServo; int currentAngle = 0; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(pirPin, INPUT); myServo.attach(servoPin); myServo.write(currentAngle); } void loop() { // Read sensors int pirValue = digitalRead(pirPin); float voltage = analogRead(tempPin) * (0.5/1023.0); // Simulated LM35 float temperature = voltage * 10.0 *4; // LM35: 10mV/°C // Send data as JSON Serial.print("{\"angle\":"); Serial.print(currentAngle); Serial.print(",\"temperature\":"); Serial.print(temperature, 1); Serial.print(",\"motion\":\""); Serial.print(pirValue == HIGH ? "Detected" : "None"); Serial.println("\"}"); // Handle incoming serial commands if (Serial.available()) { String command = Serial.readStringUntil('\n'); command.trim(); if (command == "1") { digitalWrite(ledPin, HIGH); } else if (command == "0") { digitalWrite(ledPin, LOW); } else if (command.startsWith("m")) { int angle = command.substring(1).toInt(); angle = constrain(angle, 0, 180); myServo.write(angle); currentAngle = angle; } } delay(1000); // Adjust rate of updates }